/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller.admin;

import dao.DanhmucDAO;
import dao.LoaispDAO;
import dao.NguoidungDAO;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import pojo.Danhmuc;
import pojo.Loaisp;
import pojo.Nguoidung;

/**
 *
 * @author kydrenw
 */
public class DanhMucController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception {
        hsr.setCharacterEncoding("UTF-8");
        hsr1.setCharacterEncoding("UTF-8");
        
        Nguoidung nguoiDung =(Nguoidung) hsr.getSession().getAttribute("nguoiDung");
        if (nguoiDung==null || !NguoidungDAO.laQuanLy(nguoiDung.getTendangnhap()) ) {           
            hsr.setAttribute("tag", "no");
            return new ModelAndView("admin/index");
        }        
        
        String action = hsr.getParameter("action");
        if (action != null) {
            // hiển thị trang chi tiết danh mục
            if (action.equals("sua")) {
                int ma = Integer.parseInt(hsr.getParameter("ma").toString());
                Danhmuc dm = DanhmucDAO.layThongTin(ma);
                hsr.setAttribute("danhmuc", dm);
                hsr.setAttribute("dsLoai", dm.getLoaisps());
                hsr.setAttribute("tag", "danhmuc_sua");
                return new ModelAndView("admin/index");
            }
            //end hiển thị chi tiết danh mục

            // thay đổi tên loại
            if (action.equals("suaLoai")) {
                // cập nhật loại sản phẩm
                int maLoai = Integer.parseInt(hsr.getParameter("maLoai").toString());
                String tenLoai = hsr.getParameter("tenLoai");
                Loaisp loai = LoaispDAO.layThongTin(maLoai);
                loai.setTen(tenLoai);
                LoaispDAO.suaLoai(loai);

                // load lại thông tin danh mục
                int madanhmuc = Integer.parseInt(hsr.getParameter("madanhmuc").toString());
                Danhmuc dm = DanhmucDAO.layThongTin(madanhmuc);
                hsr.setAttribute("danhmuc", dm);
                hsr.setAttribute("dsLoai", dm.getLoaisps());
                hsr.setAttribute("tag", "danhmuc_sua");
                return new ModelAndView("admin/index");
            }
            // end thay đổi tên loại

            // xóa-bỏ xóa loại sp
            if (action.equals("xoaloai") || action.equals("boxoa")) {
                int maloai = Integer.parseInt(hsr.getParameter("ma").toString());
                Loaisp loai = LoaispDAO.layThongTin(maloai);
                if (action.equals("xoaloai")) {
                    loai.setXoa(1);
                } else if (action.equals("boxoa")) {
                    loai.setXoa(0);
                }
                LoaispDAO.suaLoai(loai);
                // load lại thông tin danh mục
                int madanhmuc = Integer.parseInt(hsr.getParameter("dm").toString());
                Danhmuc dmTemp = DanhmucDAO.layThongTin(madanhmuc);
                hsr.setAttribute("danhmuc", dmTemp);
                hsr.setAttribute("dsLoai", dmTemp.getLoaisps());
                hsr.setAttribute("tag", "danhmuc_sua");
                return new ModelAndView("admin/index");
            }
            // end xóa loại sp
            // xóa danh mục
            if (action != null && action.equals("xoa")) {
                int madm = Integer.parseInt(hsr.getParameter("ma"));
                Danhmuc dm = DanhmucDAO.layThongTin(madm);
                dm.setXoa(1);
                DanhmucDAO.suaDanhMuc(dm);
            }
            // end xóa danh mục

            // bỏ xóa danh mục
            if (action.equals("check")) {
                int madm = Integer.parseInt(hsr.getParameter("ma"));
                Danhmuc dm = DanhmucDAO.layThongTin(madm);
                dm.setXoa(0);
                DanhmucDAO.suaDanhMuc(dm);
            }
            // bỏ end xóa danh mục

            // hiển thị view thêm danh mục
            if(action.equals("them")){
                hsr.setAttribute("tag", "danhmuc_them");
                return new ModelAndView("admin/index");
            }
            // end view thêm danh mục

            // submit thêm danh mục
            if(action.equals("danhmuc_them_submit")){
                String tendm = hsr.getParameter("txtTenDM");
                boolean rs = DanhmucDAO.themDanhMuc(new Danhmuc(tendm, null));
                if(rs==true)
                    hsr.setAttribute("message", "Thêm thành công");
                else
                    hsr.setAttribute("message", "Thao tác không thành công !");
                hsr.setAttribute("tag", "danhmuc_them");
                return new ModelAndView("admin/index");
            }
            // end submit thêm danh mục

            // tìm kiếm danh mục
            if(action.equals("timkiem")){
                String tukhoa = hsr.getParameter("txttukhoa");
                List<Danhmuc> dsdm = null;
                if(tukhoa!=null)
                     dsdm= DanhmucDAO.timKiem(tukhoa);
                else
                    dsdm = DanhmucDAO.layDanhSach();
                hsr.setAttribute("ds", dsdm);

                hsr.setAttribute("tag", "danhmuc");
                return new ModelAndView("admin/index");
            }

            // submit thêm loại
            if(action.equals("themloaisp_submit")){
                String name= hsr.getParameter("txtTenLoaiSP");
                int madm = Integer.parseInt(hsr.getParameter("madm"));
                Loaisp loai =  new Loaisp();
                Danhmuc dm = new Danhmuc();
                dm.setMa(madm);
                loai.setDanhmuc(dm);
                loai.setTen(name);
                loai.setXoa(0);
                loai.setSpchinh(0);
                LoaispDAO.themLoaiSP(loai);
                Danhmuc dmTemp = DanhmucDAO.layThongTin(madm);

                hsr.setAttribute("danhmuc", dmTemp);
                hsr.setAttribute("dsLoai", dmTemp.getLoaisps());
                hsr.setAttribute("tag", "danhmuc_sua");
                return new ModelAndView("admin/index");
            }

            //tìm kiếm loại sản phẩm
            if(action.equals("timkiem_loaisp")){
                int madm = Integer.parseInt(hsr.getParameter("madm"));
                String tukhoa = hsr.getParameter("txttukhoa");
                List<Loaisp> dsLoai = LoaispDAO.timKiem(madm, tukhoa);
                Danhmuc dmTemp = DanhmucDAO.layThongTin(madm);

                hsr.setAttribute("danhmuc", dmTemp);
                hsr.setAttribute("dsLoai", dsLoai);
                hsr.setAttribute("tag", "danhmuc_sua");
                return new ModelAndView("admin/index");
            }
        }



        // submit thay đổi tên danh mục
        String tendanhmuc = hsr.getParameter("tendanhmuc");
        if (tendanhmuc != null) {
            int madanhmuc = Integer.parseInt(hsr.getParameter("madanhmuc").toString());
            Danhmuc dmTemp = DanhmucDAO.layThongTin(madanhmuc);
            if (!dmTemp.getTen().equals(tendanhmuc)) {
                dmTemp.setTen(tendanhmuc);
                DanhmucDAO.suaDanhMuc(dmTemp);
            }
            hsr.setAttribute("danhmuc", dmTemp);
            hsr.setAttribute("dsLoai", dmTemp.getLoaisps());
            hsr.setAttribute("tag", "danhmuc_sua");
            return new ModelAndView("admin/index");
        }
        // end thay đổi tên danh mục



        // hiển thị trang danh sách danh mục
        List<Danhmuc> ds = DanhmucDAO.layDanhSach();
        hsr.setAttribute("ds", ds);
        hsr.setAttribute("tag", "danhmuc");
        return new ModelAndView("admin/index");
        // end hiển thị trang danh sách danh mục
    }
}